유니티 에디터
1. 개요
1. 개요
유니티 에디터는 유니티 테크놀로지스가 개발한 유니티 게임 엔진의 핵심 구성 요소이자 통합 개발 환경이다. 이 에디터는 게임 및 다양한 인터랙티브 콘텐츠를 제작하기 위한 모든 도구를 하나의 애플리케이션 안에 통합하여 제공한다. 개발자는 이 환경에서 3D 모델링과 2D 그래픽 에셋을 관리하고, 게임 로직을 위한 스크립트를 작성하며, 씬을 구성하고 최종적으로 여러 플랫폼으로 빌드 및 배포할 수 있다.
주요 기능으로는 씬 편집, 애셋 관리, 스크립트 작성 및 디버깅, 물리 시뮬레이션, 라이팅 및 셰이딩, 애니메이션 편집, 사용자 인터페이스 설계, 그리고 플랫폼별 빌드 및 배포가 포함된다. 이러한 도구들은 직관적인 그래픽 사용자 인터페이스를 통해 접근할 수 있어, 프로그래머와 아티스트를 포함한 다양한 배경의 개발자가 협업하며 콘텐츠를 제작하는 데 적합하다.
유니티 에디터는 Windows, macOS, Linux 운영체제를 모두 지원하여 다양한 개발 환경에서 사용할 수 있다. 에디터 자체의 확장성이 뛰어나 개발자는 에디터 스크립팅을 통해 커스텀 도구나 워크플로를 만들어 프로젝트의 특정 요구사항에 맞게 환경을 개선할 수 있다. 이는 대규모 게임 개발 스튜디오부터 개인 인디 게임 개발자에 이르기까지 광범위한 사용자 층을 형성하는 데 기여했다.
2. 주요 창과 인터페이스
2. 주요 창과 인터페이스
2.1. 씬 뷰
2.1. 씬 뷰
씬 뷰는 유니티 에디터에서 게임 월드의 공간적 배치와 구성을 시각적으로 편집하는 핵심 창이다. 개발자는 이 창에서 게임 오브젝트를 배치하고, 회전 및 크기 조정을 하며, 카메라와 라이트를 설정하는 등 게임 씬의 레벨 디자인을 직접 수행한다. 3D 모드와 2D 모드 간 전환이 가능하며, 뷰포트 내에서 자유롭게 이동하고 확대/축소하여 작업할 수 있다.
이 창은 단순한 시각적 편집기를 넘어서, 물리 시뮬레이션을 위한 콜라이더의 시각화, 네비게이션 메시 베이크 결과 확인, 오클루전 컬링 데이터 디버깅 등 다양한 개발 보조 기능을 제공한다. 또한, 게임 뷰와의 실시간 연동을 통해 편집 중인 씬이 실제 게임에서 어떻게 보이고 동작할지 즉시 확인할 수 있어, 빠른 프로토타입 제작과 반복 작업에 필수적이다.
작업 효율을 높이기 위한 여러 도구가 포함되어 있다. 핸드 툴, 이동 툴, 회전 툴, 크기 조정 툴 등의 변환 도구를 사용하여 정밀한 편집이 가능하다. 스냅 기능을 활성화하면 게임 오브젝트를 그리드나 다른 오브젝트에 정렬하여 배치할 수 있으며, 프리팹 인스턴스는 특별한 색상으로 강조 표시되어 에셋 관리의 편의성을 높인다.
2.2. 게임 뷰
2.2. 게임 뷰
게임 뷰는 현재 편집 중인 씬이 실제 게임으로 실행될 때 플레이어의 화면에 어떻게 보일지를 미리 확인할 수 있는 창이다. 개발자는 이 창을 통해 게임플레이의 모습과 흐름을 실시간으로 점검하며, UI 요소의 배치나 카메라의 시점, 물리 엔진의 동작 등을 검증한다. 게임 뷰 상단의 플레이 버튼을 누르면 에디터 내에서 게임이 실행되며, 이 상태에서 코드의 로직이나 애니메이션, 사운드 등 모든 게임 요소의 동작을 테스트할 수 있다.
게임 뷰에서는 다양한 디스플레이 설정을 조절할 수 있다. 화면의 가로세로 비율을 여러 플랫폼에 맞게 변경하여 해상도에 따른 레이아웃 변화를 확인하거나, 카메라의 렌더링 결과에 적용된 포스트 프로세싱 효과를 미리 볼 수 있다. 또한 통계 창을 활성화하면 프레임 레이트나 드로우 콜 수, 메모리 사용량 등 실시간 성능 정보를 오버레이 형태로 표시하여 최적화 작업에 도움을 준다.
설정 항목 | 설명 |
|---|---|
화면 비율 | 다양한 디바이스의 화면 비율(예: 16:9, 4:3, 모바일 해상도)로 게임 화면을 미리보기 |
스케일 | 게임 뷰 창의 크기를 조절하여 확대/축소 |
최대화 온 플레이 | 플레이 모드 진입 시 게임 뷰를 창 전체에 최대화 |
머지드 | |
스테레오 | 스테레오 렌더링 시 양안의 화면을 나란히 표시 |
게임 뷰는 디버깅 과정에서도 필수적이다. 플레이 모드 중에는 인스펙터 창에서 게임 오브젝트의 컴포넌트 속성 값을 실시간으로 변경해볼 수 있으며, 콘솔 창에 출력되는 로그 메시지를 확인할 수 있다. 또한 에디터 스크립팅을 통해 커스텀한 Gizmo나 핸들을 게임 뷰에 표시하여 복잡한 게임 로직을 시각적으로 디버깅하는 데 활용하기도 한다.
2.3. 계층 구조 창
2.3. 계층 구조 창
계층 구조 창은 현재 열려 있는 씬에 존재하는 모든 게임 오브젝트의 목록을 트리 구조로 보여주는 창이다. 이 창은 씬 내 오브젝트들의 부모-자식 관계를 시각적으로 표현하며, 오브젝트의 생성, 삭제, 그룹화, 정렬을 관리하는 데 사용된다. 계층 구조 창에서 오브젝트를 선택하면 인스펙터 창에서 해당 오브젝트의 속성과 컴포넌트를 편집할 수 있고, 씬 뷰에서도 해당 오브젝트가 강조 표시된다.
창 내에서는 오브젝트를 드래그 앤 드롭하여 부모-자식 관계를 쉽게 설정하거나 해제할 수 있다. 자식 오브젝트는 부모 오브젝트의 변환(위치, 회전, 크기)을 상속받아 함께 움직이므로, 캐릭터와 그 무기처럼 논리적으로 연결된 객체들을 구성할 때 유용하다. 또한 오브젝트 이름을 더블클릭하여 씬 뷰에서 해당 오브젝트로 즉시 초점을 맞추거나, 검색 바를 이용해 특정 오브젝트를 빠르게 찾을 수 있다.
창 상단에는 씬을 관리하는 여러 기능이 있다. 'Create' 버튼으로 빈 게임 오브젝트나 기본 프리미티브 오브젝트(큐브, 구, 평면 등)를 생성할 수 있으며, 씬의 저장 상태를 나타내는 표시자와 씬 간 전환을 위한 드롭다운 메뉴도 위치한다. 이는 복잡한 프로젝트에서 여러 씬을 오가며 작업할 때 효율성을 높여준다.
계층 구조 창은 씬의 논리적 구조를 한눈에 파악하고 제어하는 핵심 도구로, 특히 오브젝트가 많은 대규모 씬을 구성하거나 UI 요소를 배치할 때 필수적이다. 여기서 오브젝트의 활성화/비활성화 상태를 토글하거나, 레이어를 할당하는 등의 기본 작업도 수행 가능하다.
2.4. 프로젝트 창
2.4. 프로젝트 창
프로젝트 창은 유니티 에디터에서 프로젝트에 포함된 모든 에셋을 관리하고 탐색하는 데 사용되는 핵심 창이다. 이 창은 파일 시스템의 폴더 구조를 반영하여 프로젝트의 모든 리소스, 예를 들어 3D 모델, 텍스처, 오디오 파일, 스크립트, 프리팹 등을 시각적으로 보여준다. 사용자는 이 창을 통해 에셋을 생성, 삭제, 이동, 검색하며, 에셋 임포트 설정을 확인하거나 수정할 수 있다.
창은 일반적으로 두 개의 주요 패널로 구성된다. 왼쪽의 트리 뷰는 프로젝트 폴더의 계층 구조를 보여주며, 오른쪽의 영역은 선택된 폴더 내의 에셋들을 아이콘 또는 리스트 형태로 표시한다. 에셋 번들을 구성하거나 특정 에셋에 메타데이터를 포함하는 .meta 파일을 관리하는 작업도 이 창을 통해 이루어진다.
프로젝트 창은 게임 오브젝트를 구성하는 에셋들을 조직화하는 중심 허브 역할을 한다. 여기서 에셋을 씬 뷰나 계층 구조 창으로 드래그하여 씬에 직접 추가할 수 있으며, 인스펙터 창에서 해당 에셋의 세부 속성을 편집할 수 있다. 또한, 프리팹을 생성하거나 수정하는 작업의 출발점이 되기도 한다.
효율적인 워크플로를 위해 프로젝트 창은 강력한 검색 및 필터링 기능을 제공한다. 에셋 이름, 유형, 레이블 등을 기준으로 빠르게 찾을 수 있으며, 자주 사용하는 에셋은 즐겨찾기로 등록하여 신속하게 접근할 수 있다. 이 창의 체계적인 사용은 대규모 프로젝트에서 리소스 관리를 용이하게 하는 필수적인 요소이다.
2.5. 인스펙터 창
2.5. 인스펙터 창
인스펙터 창은 유니티 에디터에서 선택된 게임 오브젝트나 에셋의 모든 속성과 설정을 보고 편집할 수 있는 핵심 창이다. 이 창은 현재 선택된 항목에 부착된 모든 컴포넌트와 그 세부 파라미터를 계층적으로 표시하며, 개발자가 게임 오브젝트의 동작과 외관을 실시간으로 조정하고 구성하는 데 사용된다.
창의 상단에는 선택된 항목의 이름, 태그, 레이어, 정적 플래그 등 기본 정보가 위치한다. 그 아래에는 해당 오브젝트에 추가된 모든 컴포넌트가 목록 형태로 나열된다. 각 컴포넌트는 접거나 펼칠 수 있으며, 컴포넌트 내부의 다양한 속성 필드(예: 숫자, 문자열, 불리언, 색상, 참조)를 직접 수정할 수 있다. 이러한 변경 사항은 즉시 씬 뷰나 게임 뷰에 반영되어 빠른 프로토타이핑과 반복 작업을 가능하게 한다.
인스펙터 창은 컴포넌트의 추가, 제거, 재정렬을 지원할 뿐만 아니라, 사용자 정의 스크립트로 생성된 컴포넌트의 공개 변수도 표시하고 편집할 수 있다. 또한 프리팹 인스턴스를 편집할 때 오버라이드 기능을 제공하며, 머티리얼이나 물리 재질 같은 에셋의 속성을 미리 보기와 함께 수정하는 데에도 활용된다. 이 창의 인터페이스는 속성 드로어를 통해 커스터마이즈될 수 있어, 개발자가 자신만의 편집 도구를 만들 수 있도록 확장성을 제공한다.
2.6. 콘솔 창
2.6. 콘솔 창
콘솔 창은 유니티 에디터에서 게임 개발 중 발생하는 메시지, 경고, 오류를 실시간으로 표시하는 로그 패널이다. 이 창은 스크립트의 디버그 출력, 에디터 자체의 상태 알림, 그리고 빌드 과정에서의 문제점을 확인하는 데 필수적이다. 개발자는 콘솔 창을 통해 게임 오브젝트의 참조 오류나 스크립트의 구문 오류와 같은 문제를 빠르게 진단하고 해결할 수 있다.
콘솔 창에는 일반 메시지, 경고, 오류 등 유형별로 색상이 구분되어 표시되며, 각 메시지는 발생한 시간과 함께 기록된다. 사용자는 특정 유형의 메시지만 필터링하여 볼 수 있고, 메시지를 더블클릭하면 해당 문제가 발생한 스크립트 파일과 줄 번호로 바로 이동할 수 있어 디버깅 워크플로를 크게 향상시킨다. 또한, 콘솔 창의 내용을 텍스트 파일로 저장하거나 창을 지우는 기능도 제공된다.
3. 에디터 기능
3. 에디터 기능
3.1. 에셋 임포트 및 관리
3.1. 에셋 임포트 및 관리
에셋 임포트는 유니티 에디터에서 외부 제작 도구로 만든 모든 게임 리소스를 프로젝트 내부로 가져오는 과정이다. 3D 모델, 텍스처, 오디오 파일, 스크립트 등 다양한 형식의 파일을 프로젝트 창에 드래그 앤 드롭하거나 'Assets' 메뉴를 통해 임포트할 수 있다. 유니티는 FBX, OBJ, PNG, JPEG, WAV, MP3 등 널리 사용되는 파일 형식을 자동으로 지원하며, 임포트되는 동시에 에셋 데이터베이스에 등록되어 관리된다.
임포트된 에셋은 인스펙터 창에서 상세한 설정을 조정할 수 있다. 예를 들어, 텍스처의 경우 압축 형식, 필터 모드, 마이맵 생성 여부 등을 설정하여 메모리 사용량과 화질을 최적화한다. 3D 모델은 스케일, 애니메이션 데이터 임포트 여부, 메시 최적화 옵션 등을 조정할 수 있다. 이러한 설정은 프로젝트의 플랫폼과 예술적 요구사항에 맞게 세밀하게 조정된다.
에셋 관리를 효율화하기 위한 핵심 기능으로 프리팹 시스템과 에셋 번들이 있다. 프리팹은 게임 오브젝트와 그 컴포넌트 구성을 재사용 가능한 에셋으로 저장하는 것으로, 한 번 수정하면 모든 인스턴스에 동시에 반영된다. 에셋 번들은 런타임에 동적으로 로드할 수 있도록 에셋들을 패키징하는 시스템으로, 특히 모바일 게임이나 대규모 콘텐츠에서 초기 다운로드 크기를 줄이고 자원을 효율적으로 관리하는 데 필수적이다.
에디터는 에셋의 변경 사항을 실시간으로 감지하여 자동으로 다시 임포트한다. 또한 버전 관리 시스템과의 통합을 지원하며, 에셋 스토어에서 구매하거나 다운로드한 에셋 패키지를 프로젝트에 쉽게 통합할 수 있는 기능을 제공한다. 이를 통해 개발자는 복잡한 리소스 관리 작업보다는 게임의 콘텐츠와 기능 구현에 집중할 수 있는 환경을 갖출 수 있다.
3.2. 게임 오브젝트 생성 및 편집
3.2. 게임 오브젝트 생성 및 편집
게임 오브젝트 생성 및 편집은 유니티 에디터에서 씬을 구성하는 가장 기본적이고 핵심적인 작업이다. 모든 게임은 하나 이상의 게임 오브젝트로 이루어져 있으며, 이 오브젝트들을 생성하고 배치하여 게임 월드를 구축한다.
게임 오브젝트는 계층 구조 창이나 메뉴 바를 통해 생성할 수 있다. 빈 오브젝트로 시작하거나, 큐브, 구, 캡슐 같은 기본 3D 도형, 스프라이트를 사용한 2D 오브젝트, 조명, 카메라, UI 요소 등 미리 정의된 형태로 생성된다. 생성된 오브젝트는 씬 뷰에서 마우스로 직접 드래그하여 이동, 회전, 크기 조절을 할 수 있으며, 인스펙터 창에서 정확한 수치를 입력하여 변환을 제어할 수 있다.
게임 오브젝트의 실제 기능과 동작은 컴포넌트를 추가하여 정의한다. 예를 들어, 물리적인 움직임을 주려면 리지드바디 컴포넌트를, 모양을 보이게 하려면 메시 렌더러 컴포넌트를, 사용자 입력에 반응하게 하려면 스크립트 컴포넌트를 부착한다. 인스펙터 창은 이러한 컴포넌트들의 속성을 보고 편집하는 주요 인터페이스 역할을 한다.
복잡한 오브젝트는 여러 자식 오브젝트를 포함하는 계층 구조로 구성할 수 있으며, 자주 재사용되는 오브젝트 조합은 프리팹으로 저장하여 효율적으로 관리한다. 또한, 씬 뷰의 다양한 기즈모 도구와 스냅핑 기능을 활용하면 오브젝트를 정밀하고 빠르게 배치하고 편집할 수 있다.
3.3. 컴포넌트 시스템
3.3. 컴포넌트 시스템
컴포넌트 시스템은 유니티에서 모든 게임 기능을 구현하는 근간이 되는 모듈식 아키텍처이다. 게임 오브젝트는 빈 컨테이너에 불과하며, 실제 동작과 속성은 이에 부착된 컴포넌트들에 의해 정의된다. 이는 객체 지향 프로그래밍의 구성(Composition) 원칙을 따르는 설계로, 개발자가 필요한 기능만을 조합하여 유연하게 객체를 구성할 수 있게 한다.
각 컴포넌트는 특정한 역할을 담당한다. 예를 들어, Transform 컴포넌트는 오브젝트의 위치, 회전, 크기를 관리하고, Mesh Renderer 컴포넌트는 3D 모델을 화면에 그리며, Rigidbody 컴포넌트는 물리 엔진의 제어를 받아 중력과 충돌을 구현한다. 스크립트 또한 MonoBehaviour 클래스를 상속받는 하나의 컴포넌트로서, 사용자 정의 로직을 게임 오브젝트에 추가하는 역할을 한다.
컴포넌트는 인스펙터 창을 통해 관리된다. 개발자는 인스펙터 창에서 게임 오브젝트에 부착된 컴포넌트 목록을 확인하고, 각 컴포넌트의 속성 값을 실시간으로 편집할 수 있다. 또한 'Add Component' 버튼을 통해 새로운 컴포넌트를 추가하거나, 불필요한 컴포넌트를 제거하는 작업이 가능하다. 이 시스템은 프리팹과 결합되어, 동일한 컴포넌트 구성을 가진 오브젝트를 효율적으로 재사용하고 일괄 수정하는 데 기여한다.
이러한 모듈식 접근 방식은 게임 개발의 복잡성을 관리하고 재사용성을 높이는 데 핵심적이다. 물리, 렌더링, 사운드, 인공지능과 같은 복잡한 시스템들이 독립된 컴포넌트로 캡슐화되어, 개발자는 각 시스템의 세부 구현보다는 게임의 논리와 상호작용에 집중할 수 있게 된다.
3.4. 프리팹 시스템
3.4. 프리팹 시스템
프리팹 시스템은 게임 오브젝트와 그에 부착된 모든 컴포넌트의 구성, 속성값, 계층 구조를 하나의 재사용 가능한 에셋으로 저장하는 기능이다. 개발자는 씬 뷰나 계층 구조 창에서 구성한 게임 오브젝트를 프로젝트 창으로 드래그하여 프리팹을 생성할 수 있다. 이렇게 생성된 프리팹은 여러 씬에 걸쳐 반복적으로 인스턴스화하여 사용할 수 있어, 동일한 요소를 일일이 다시 만들 필요가 없으므로 개발 효율성을 크게 향상시킨다.
프리팹의 가장 큰 장점은 중앙 집중식 관리가 가능하다는 점이다. 인스펙터 창에서 프리팹 원본 에셋을 수정하면, 해당 프리팹으로부터 생성된 모든 인스턴스에 변경 사항이 자동으로 반영된다. 이는 캐릭터, 아이템, 환경 오브젝트 등 반복적으로 등장하는 요소들의 일관성을 유지하고 대규모 업데이트를 쉽게 만든다. 또한, 프리팹 모드를 통해 원본 프리팹을 독립적으로 편집할 수 있어, 씬의 다른 오브젝트들을 방해하지 않고 작업이 가능하다.
개발 과정에서 프리팹 인스턴스는 개별적으로 오버라이드(재정의)될 수 있다. 예를 들어, 특정 인스턴스의 위치나 색상만 다르게 설정하는 것이 가능하다. 이후 원본 프리팹이 업데이트되면, 오버라이드되지 않은 속성들만 인스턴스에 적용된다. 이 시스템은 버전 관리와 협업에도 유리하며, 에셋 번들을 통한 콘텐츠의 동적 로딩과도 밀접하게 연관되어 있다.
3.5. 애니메이션 편집
3.5. 애니메이션 편집
유니티 에디터의 애니메이션 편집 기능은 게임 오브젝트의 움직임과 변화를 제작하고 관리하는 도구 모음이다. 이 기능은 주로 애니메이션 창과 애니메이터 창을 중심으로 구성되어 있으며, 키프레임 기반의 애니메이션 제작과 상태 기반의 복잡한 애니메이션 로직 제어를 모두 지원한다.
애니메이션 창에서는 게임 오브젝트의 트랜스폼, 머티리얼 속성, 컴포넌트 변수 등 다양한 값의 변화를 시간축에 따라 키프레임으로 기록하여 애니메이션 클립을 생성한다. 생성된 애니메이션 클립은 프로젝트 창에 에셋으로 저장되어 재사용이 가능하다. 또한 인스펙터 창에서 애니메이션 이벤트를 설정하여 특정 프레임에서 스크립트 함수를 호출할 수 있다.
더욱 복잡한 캐릭터나 객체의 동작을 위해 애니메이터 창이 사용된다. 이 창에서는 여러 애니메이션 클립을 애니메이션 상태로 만들어 상태 머신을 구성하고, 파라미터와 트랜지션을 설정하여 게임 런타임 중 상태 간 전환 로직을 설계한다. 이를 통해 걷기, 뛰기, 점프 등 다양한 동작을 조건에 따라 자연스럽게 블렌딩하거나 전환할 수 있다. 리타게팅을 지원하여 외부 3D 애니메이션 도구에서 제작한 모션 캡처 데이터도 임포트하여 활용할 수 있다.
3.6. 터레인 편집기
3.6. 터레인 편집기
터레인 편집기는 유니티 에디터 내에서 3D 지형(터레인)을 생성하고 편집할 수 있는 전용 도구이다. 이 도구는 게임 월드의 배경이 되는 자연 지형, 산, 계곡, 평원 등을 직관적으로 조각하고 텍스처를 페인팅하며 나무나 풀과 같은 세부 객체를 배치하는 기능을 제공한다. 주로 오픈월드 게임, 레이싱 게임, 전략 시뮬레이션 등 대규모 야외 환경이 필요한 프로젝트에서 필수적으로 활용된다.
터레인 편집기의 핵심 기능은 크게 지형 조각, 텍스처 페인팅, 객체 배치로 나눌 수 있다. 지형 조각 도구를 사용하면 높이를 올리거나 내리는 방식으로 산과 골짜기를 만들고, 매끄럽게 하거나 평평하게 만드는 작업을 수행할 수 있다. 텍스처 페인팅 도구는 여러 개의 지형 재질(예: 잔디, 흙, 돌, 모래)을 레이어로 추가하여 브러시로 칠하듯이 지표면에 적용할 수 있다. 또한, 나무나 풀과 같은 세부 객체를 배치하는 도구를 통해 생동감 있는 자연 환경을 구성할 수 있다.
이 편집기는 강력한 자동화 기능도 제공한다. 높이맵 데이터를 임포트하여 실제 지형 데이터를 기반으로 터레인을 생성하거나, 노이즈를 이용해 지형을 절차적으로 생성할 수 있다. 배치된 객체의 밀도, 크기, 회전값을 랜덤하게 조절하여 보다 자연스러운 느낌을 줄 수 있으며, LOD 시스템과 통합되어 먼 거리의 객체는 자동으로 단순화되어 렌더링 성능을 최적화한다.
터레인 편집기로 생성된 지형 데이터는 유니티의 물리 엔진과도 연동되어 충돌 판정에 사용될 수 있으며, 라이팅 시스템과의 호환을 위해 지형에 맞는 라이트맵을 생성하는 데에도 활용된다. 이를 통해 개발자는 복잡한 코딩 없이도 시각적으로 풍부하고 상호작용 가능한 대규모 게임 환경을 비교적 쉽게 구축할 수 있다.
3.7. 라이팅 및 렌더링 설정
3.7. 라이팅 및 렌더링 설정
라이팅 및 렌더링 설정은 유니티 에디터에서 시각적 품질과 분위기를 결정하는 핵심 작업 공간이다. 이 기능들은 씬 뷰에서 실시간으로 확인하며 조정할 수 있으며, 인스펙터 창을 통해 각종 라이팅 컴포넌트와 렌더링 설정을 세밀하게 제어한다. 주요 설정 대상으로는 방향성 광원, 점 광원, 스포트라이트와 같은 광원 오브젝트와, 환경 광, 반사 프로브, 조명 프로브 등이 포함된다. 또한 포스트 프로세싱 효과를 적용하여 블룸, 모션 블러, 색 보정 등을 추가할 수 있다.
렌더링 파이프라인 설정은 근본적인 그래픽스 처리를 정의한다. 유니티 에디터는 빌트인 렌더 파이프라인, 유니버설 렌더 파이프라인(URP), 고해상도 렌더 파이프라인(HDRP) 중 하나를 프로젝트에 선택하여 사용한다. 각 파이프라인은 지원하는 그래픽스 API와 최적화 목표가 다르며, 이를 통해 모바일 플랫폼부터 고사양 PC까지 다양한 대상에 맞는 시각적 결과와 성능을 달성할 수 있다. 파이프라인 설정은 프로젝트 생성 시 또는 이후 프로젝트 설정에서 변경할 수 있다.
라이팅 작업의 최종 단계는 조명 베이크이다. 이 과정에서는 정적 광원과 정적 오브젝트의 상호작용을 미리 계산하여 라이트맵이라는 텍스처로 저장한다. 베이크된 라이팅은 런타임 성능 부담을 크게 줄여주며, 복잡한 글로벌 일루미네이션 효과를 실시간으로 구현하기 어려운 플랫폼에서 특히 중요하다. 에디터의 라이트맵 에디터 창에서는 베이크 해상도, 앰비언트 오클루전 품질 등의 파라미터를 설정할 수 있다.
이러한 라이팅 및 렌더링 설정은 머티리얼 에디터와 셰이더 그래프를 통해 생성된 머티리얼과 밀접하게 연동되어 최종 화면을 구성한다. 개발자는 다양한 설정을 실험하며 목표하는 예술적 방향성과 기술적 요구사항 사이의 최적의 균형점을 찾아간다.
4. 스크립팅 및 확장
4. 스크립팅 및 확장
4.1. 에디터 스크립팅
4.1. 에디터 스크립팅
에디터 스크립팅은 유니티 에디터의 기능을 확장하거나 자동화하기 위해 C# 스크립트를 작성하는 개발 방식을 가리킨다. 이는 게임 런타임 로직을 작성하는 일반적인 게임 스크립팅과 구분되는 개념으로, 주로 에디터 내에서만 동작하는 도구를 만드는 데 사용된다. 개발자는 이를 통해 반복적인 작업을 줄이고, 프로젝트에 특화된 맞춤형 워크플로를 구축하며, 에셋 파이프라인을 자동화할 수 있다.
에디터 스크립팅의 핵심은 UnityEditor 네임스페이스에 포함된 API를 활용하는 것이다. 이 API를 사용하면 프로젝트 창의 에셋을 검색하고 수정하거나, 씬 뷰에 기즈모를 그려 시각적인 도구를 제공하며, 인스펙터 창에 커스텀 UI를 추가하는 등 다양한 작업이 가능하다. 예를 들어, 특정 규칙으로 수백 개의 텍스처 에셋을 일괄 처리하거나, 게임 디자이너가 사용하기 쉬운 데이터 에디터를 제작할 수 있다.
주요 구현 방식으로는 커스텀 에디터 창을 만들어 독립적인 도구 창을 표시하거나, 특정 유형의 게임 오브젝트나 스크립터블 오브젝트 전용으로 동작하는 커스텀 인스펙터를 작성하는 것이 있다. 또한 속성 드로어를 이용해 인스펙터에서 기본적으로 제공하지 않는 특수한 UI 컨트롤을 만들거나, 상단 메뉴에 새로운 항목을 추가하여 스크립트 기능을 실행할 수 있게 한다.
에디터 스크립트는 일반적으로 "Editor"라는 이름의 폴더 안에 저장하며, 이 폴더 내의 스크립트는 빌드 과정에서 제외되어 최종 게임 실행 파일에 포함되지 않는다. 이는 에디터 전용 기능이 게임 런타임 성능에 영향을 주지 않도록 보장하기 위한 설계이다. 이러한 스크립팅 능력은 유니티를 단순한 게임 엔진이 아닌 강력한 콘텐츠 제작 도구로 만드는 중요한 요소 중 하나이다.
4.2. 커스텀 에디터 창
4.2. 커스텀 에디터 창
커스텀 에디터 창은 유니티 에디터의 기본 인터페이스를 확장하여 개발자가 특정 작업에 최적화된 전용 도구 창을 직접 설계하고 구현할 수 있는 기능이다. 이는 에디터 스크립팅을 활용하여 C# 언어로 작성되며, GUI 요소를 배치하여 복잡한 데이터 관리나 반복적인 작업을 자동화하는 데 주로 사용된다. 기본 제공되는 씬 뷰나 인스펙터 창으로는 처리하기 어려운 프로젝트 고유의 에셋 관리, 데이터 시각화, 또는 특수한 편집 작업을 위한 맞춤형 솔루션을 구축할 수 있게 해준다.
커스텀 에디터 창을 생성하는 핵심은 EditorWindow 클래스를 상속받는 스크립트를 작성하는 것이다. 개발자는 CreateWindow 메뉴 항목을 추가하거나 단축키를 통해 창을 열 수 있도록 설정하며, 창 내부의 레이아웃과 기능은 OnGUI 메서드나 새로운 UI 툴킷 시스템을 사용하여 정의한다. 이를 통해 프로젝트 내 게임 오브젝트의 상태를 일괄 변경하거나, 외부 JSON 또는 CSV 파일로부터 데이터를 임포트하는 전용 인터페이스, 혹은 레벨 디자인을 보조하는 특수한 편집 도구 등을 제작할 수 있다.
이 기능은 특히 대규모 프로젝트나 특정 장르의 게임 개발에서 워크플로 효율성을 극대화하는 데 필수적이다. 예를 들어, 롤플레잉 게임에서 다수의 캐릭터 스탯을 편집하는 테이블 뷰어, 또는 퍼즐 게임의 레벨 데이터를 시각적으로 배치하는 에디터를 만들 수 있다. 커스텀 에디터 창은 유니티 에디터의 강력한 확장성과 유연성을 보여주는 대표적인 사례로, 개발 팀의 생산성을 높이는 핵심 도구가 된다.
4.3. 속성 드로어
4.3. 속성 드로어
속성 드로어는 유니티 에디터의 인스펙터 창에서 사용자 정의 스크립트나 컴포넌트의 필드를 어떻게 표시하고 편집할지를 제어하는 기능이다. 개발자는 C# 스크립트에 특별한 어트리뷰트를 추가함으로써, 기본적인 필드 입력 칸을 버튼이나 슬라이더, 열거형 팝업 메뉴 등 다양한 사용자 인터페이스 요소로 변경할 수 있다. 이를 통해 데이터 입력 과정을 직관적으로 만들고, 실수할 가능성을 줄이며, 에디터 내 워크플로를 효율화한다.
주요 어트리뷰트로는 범위를 지정하는 Range, 도움말 텍스트를 표시하는 Tooltip, 필드를 읽기 전용으로 만드는 ReadOnly, 헤더를 구분하는 Header 등이 있다. 또한 SerializeField 어트리뷰트를 사용하면 프라이빗 변수나 프로텍티드 변수도 인스펙터 창에 노출시켜 편집할 수 있다. 이러한 커스터마이징은 게임 디자이너나 아티스트와 같은 비프로그래머 팀원이 안전하게 게임 데이터를 조정할 수 있게 하는 데 특히 유용하다.
더 복잡한 사용자 정의가 필요할 경우, PropertyDrawer 클래스나 Editor 클래스를 상속받아 완전히 새로운 형태의 커스텀 에디터를 구현할 수도 있다. 이를 통해 에디터 확장 기능의 일부로, 특정 에셋 타입을 위한 전용 인스펙터 인터페이스를 만들거나, 시각적인 피드백이 포함된 복합적인 컨트롤을 설계하는 것이 가능해진다.
4.4. 메뉴 항목 추가
4.4. 메뉴 항목 추가
유니티 에디터는 개발자가 자신의 작업 흐름에 맞게 메뉴를 확장할 수 있는 기능을 제공한다. 이를 통해 자주 사용하는 기능이나 자체 개발한 도구에 빠르게 접근할 수 있어 개발 효율을 높일 수 있다. 메뉴 항목 추가는 주로 에디터 스크립팅을 통해 이루어지며, C# 스크립트에 특별한 어트리뷰트를 사용하여 정의한다.
가장 일반적인 방법은 MenuItem 어트리뷰트를 사용하는 것이다. 이 어트리뷰트를 정적 메서드에 적용하면, 유니티 에디터의 상단 메뉴 바에 새로운 항목이 생성된다. 개발자는 메뉴 경로와 단축키를 지정할 수 있으며, 메뉴 항목이 활성화될 조건을 제어하는 함수를 함께 작성할 수도 있다. 이를 통해 특정 타입의 게임 오브젝트가 선택되었을 때만 메뉴를 활성화하는 등의 세밀한 제어가 가능하다.
또한, 컨텍스트 메뉴를 확장하는 방법도 있다. AddComponentMenu 어트리뷰트를 사용하면 컴포넌트 스크립트를 "Component" 메뉴에 추가할 수 있어, 게임 오브젝트에 스크립트를 부착하는 과정을 단순화한다. 비슷하게 CreateAssetMenu 어트리뷰트는 프로젝트 창에서 우클릭하여 새로운 에셋을 생성할 수 있는 메뉴를 만들어 준다. 이는 사용자 정의 스크립터블 오브젝트나 프리팹을 쉽게 생성할 때 유용하다.
이러한 메뉴 확장 기능은 커스텀 에디터 창이나 속성 드로어와 같은 다른 확장 기능과 결합되어 강력한 개발 도구 세트를 구성할 수 있다. 결과적으로 개발팀은 유니티 에디터를 프로젝트의 특정 요구사항에 맞게 최적화된 전용 개발 환경으로 변모시킬 수 있다.
5. 빌드 및 배포
5. 빌드 및 배포
5.1. 빌드 설정
5.1. 빌드 설정
빌드 설정은 유니티 에디터에서 개발한 프로젝트를 다양한 플랫폼으로 최종 출력하기 위한 환경을 구성하는 핵심 기능이다. 이 기능은 파일 메뉴의 '빌드 설정' 옵션을 통해 접근할 수 있는 별도의 창에서 관리된다. 개발자는 이 창에서 빌드에 포함할 씬을 순서대로 추가하고, 목표 플랫폼을 선택하며, 해당 플랫폼에 특화된 여러 옵션을 설정할 수 있다. 이를 통해 PC용 실행 파일부터 모바일 게임의 APK 또는 IPA 파일, 웹GL 빌드에 이르기까지 다양한 형식의 애플리케이션을 생성할 수 있다.
빌드 설정 창에서는 플레이어 설정으로 연결되는 버튼을 제공하여, 더 세부적인 프로젝트 식별 정보(예: 회사명, 제품명, 번들 식별자)와 아이콘, 해상도 및 프레젠테이션 설정 등을 조정할 수 있게 한다. 또한 스크립트 백엔드, API 호환성 레벨, 스트리밍 애셋 처리 방식과 같은 기술적 옵션도 여기서 설정 가능하다. 특히 안드로이드나 iOS 빌드를 위해서는 해당 SDK와 빌드 도구가 사전에 설치되어 있어야 하며, 빌드 설정 창에서 정확한 경로가 지정되어야 한다.
빌드 프로세스를 시작하면 유니티 에디터는 프로젝트의 모든 애셋을 대상 플랫폼에 맞게 변환하고 최적화하여 하나의 패키지로 묶는다. 이 과정에서 텍스처 압축, 오디오 포맷 변환, 스크립트 컴파일이 수행된다. 빌드 설정을 효과적으로 이용하면 개발 단계에서 빠르게 데스크톱으로 테스트 빌드를 생성하거나, 최종적으로 앱 스토어에 출시할 패키지를 준비하는 등 효율적인 배포 워크플로를 구축할 수 있다.
5.2. 플레이어 설정
5.2. 플레이어 설정
플레이어 설정은 유니티 에디터에서 최종 애플리케이션(실행 파일)의 속성과 특성을 정의하는 곳이다. 이 설정은 빌드 과정을 거쳐 생성되는 게임이나 프로그램의 기본 정보와 동작 방식을 결정한다. 개발자는 여기서 애플리케이션의 이름, 회사명, 아이콘, 해상도 및 화면 방향, 그래픽스 품질 수준 등 핵심적인 메타데이터를 지정한다.
주요 설정은 크게 몇 가지 범주로 나뉜다. "회사 이름"과 "제품 이름"은 애플리케이션을 식별하는 기본 정보이다. "해상도 및 프레젠테이션" 섹션에서는 풀스크린 모드, 기본 화면 해상도, 허용 가능한 화면 방향(예: 세로 모드, 가로 모드)을 설정한다. "아이콘" 설정에서는 다양한 크기와 플랫폼에 맞는 애플리케이션 아이콘을 할당할 수 있다.
또한 "그래픽스" 설정에서는 사용할 렌더 파이프라인과 기본 그래픽스 API를 선택하며, 텍스처 품질이나 안티앨리어싱 같은 렌더링 품질 수준을 조정할 수 있다. "번들 식별자"는 특히 iOS와 안드로이드 같은 모바일 플랫폼에서 중요한데, 앱 스토어에서 애플리케이션을 고유하게 식별하는 데 사용된다. 이러한 모든 설정은 크로스 플랫폼 개발 시 각 대상 운영체제에 맞게 개별적으로 구성될 수 있어, 하나의 프로젝트로 다양한 플랫폼에 최적화된 빌드를 생성하는 데 기여한다.
5.3. 에셋 번들
5.3. 에셋 번들
에셋 번들은 유니티 에디터에서 게임 에셋을 패키징하여 런타임에 동적으로 로드할 수 있게 해주는 시스템이다. 이 시스템은 주로 대규모 게임이나 콘텐츠 업데이트가 필요한 게임에서 메모리 관리와 다운로드 크기를 최적화하기 위해 사용된다. 개발자는 에디터 내에서 특정 에셋들을 묶어 하나의 번들 파일로 생성할 수 있으며, 이 파일은 게임이 실행되는 동안 필요 시점에 네트워크나 로컬 저장소에서 불러와 사용할 수 있다.
에셋 번들을 사용하면 초기 게임 설치 용량을 줄이고, 사용자가 필요로 하는 콘텐츠(예: 특정 레벨의 맵, 캐릭터 스킨, 언어별 로컬라이제이션 데이터)만 선택적으로 다운로드하도록 할 수 있다. 또한, 게임 출시 후 새로운 콘텐츠나 패치를 별도의 번들로 제작하여 배포함으로써 전체 게임 클라이언트를 다시 빌드할 필요 없이 유연하게 콘텐츠를 업데이트할 수 있다.
에셋 번들 생성 및 관리는 주로 프로젝트 창과 인스펙터 창을 통해 이루어진다. 개발자는 에셋에 에셋 번들 태그를 할당하고, 빌드 파이프라인 스크립트를 작성하여 번들을 빌드한다. 생성된 번들은 유니티 웹 리퀘스트 또는 에셋번들 API를 통해 게임 내에서 로드하고 인스턴스화할 수 있다. 이 시스템은 모바일 게임과 같이 다운로드 제한이 엄격한 플랫폼이나 라이브 서비스 게임 개발에 필수적인 요소로 자리 잡았다.
6. 단축키와 워크플로
6. 단축키와 워크플로
유니티 에디터는 개발자가 효율적으로 작업할 수 있도록 다양한 키보드 단축키를 제공한다. 이러한 단축키를 숙지하고 활용하는 것은 워크플로의 속도와 정확도를 크게 향상시킨다. 대표적인 기본 단축키로는 씬 뷰에서 오브젝트를 선택하고 이동, 회전, 크기 조절을 하는 변환 도구 관련 키(F: 포커스, W: 이동, E: 회전, R: 크기 조절)와, 게임을 실행하거나 일시정지하는 컨트롤 키(Ctrl+P: 재생/일시정지, Ctrl+Shift+P: 한 프레임 진행) 등이 있다. 또한 계층 구조 창이나 프로젝트 창에서 오브젝트나 에셋을 빠르게 검색하는 'F' 키나, 현재 선택한 오브젝트를 프리팹으로 저장하는 Ctrl+Shift+P(맥OS는 Cmd+Shift+P) 등의 단축키가 자주 사용된다.
개발자는 자신의 작업 스타일에 맞게 거의 모든 메뉴 명령의 단축키를 사용자 정의할 수 있다. Edit 메뉴의 Shortcuts 항목을 통해 키 바인딩을 변경하거나 새로운 단축키를 할당할 수 있어, 개인화된 최적의 작업 환경을 구축하는 데 도움이 된다. 특히 애니메이터 편집이나 터레인 조작, 라이팅 설정 등 특정 모듈을 집중적으로 사용할 때 관련 단축키를 익히면 생산성이 크게 개선된다.
효율적인 워크플로를 구성하는 또 다른 핵심은 에디터 레이아웃의 관리이다. 유니티 에디터는 각 창의 위치와 크기를 자유롭게 조정하여 저장할 수 있는 여러 기본 레이아웃(2 by 3, Tall, Wide 등)을 제공한다. 개발자는 작업 내용에 따라 적절한 레이아웃을 선택하거나, 자신만의 커스텀 레이아웃을 만들어 빠르게 전환하며 사용할 수 있다. 예를 들어, 스크립트 작성 시에는 콘솔 창과 인스펙터 창을 강조하고, 씬 뷰에서 레벨을 디자인할 때는 게임 뷰와 계층 구조 창을 넓게 배치하는 방식이다.
에디터의 확장 기능을 활용한 워크플로 자동화도 중요하다. 에디터 스크립팅을 통해 반복적인 작업을 자동화하거나, 팀 내 표준에 맞는 커스텀 에디터 창을 만들어 에셋 검증 프로세스를 통합하는 등 고급 워크플로를 구축할 수 있다. 이러한 단축키 활용, 레이아웃 관리, 자동화 도구의 조합은 복잡한 게임 개발 프로젝트를 체계적으로 진행하는 데 필수적이다.
7. 여담
7. 여담
유니티 에디터는 게임 개발자에게 익숙한 몇 가지 특징과 문화를 가지고 있다. 에디터의 기본 색상 테마는 어두운 '다크 스킨'으로, 장시간 작업 시 눈의 피로를 줄이는 데 도움이 된다. 사용자는 설정에서 '라이트 스킨'으로 전환할 수도 있다. 또한, 에디터의 레이아웃은 사용자의 작업 방식에 따라 창들을 자유롭게 배치하고 저장할 수 있어, 프로그래머, 아티스트, 디자이너 등 각자의 역할에 최적화된 워크플로를 구성하는 것이 일반적이다.
유니티 에디터는 강력한 확장성을 자랑한다. 개발자들은 C 샤프 언어를 사용해 에디터 스크립팅을 통해 자체적인 툴을 만들거나, 기존 기능을 자동화할 수 있다. 이를 통해 반복적인 작업을 줄이고, 프로젝트에 특화된 효율적인 개발 환경을 구축한다. 애셋 스토어에는 이러한 커스텀 툴이나 에디터 확장 기능을 판매하는 경우도 많다.
에디터를 사용하다 보면 마주치는 몇 가지 유명한 기능이나 현상이 있다. 예를 들어, 게임 오브젝트의 위치, 회전, 크기를 조절하는 변환 도구는 단축키 W, E, R로 빠르게 전환하여 사용한다. 또한, 프리팹 인스턴스를 실수로 오버라이드하는 것을 방지하기 위해 인스펙터 창에 나타나는 '오버라이드 적용' 버튼은 중요한 워크플로의 일부이다. 때때로 씬 뷰에서 작업하다 보면 게임 오브젝트가 사라지는 것처럼 보이는 '카메라 클리핑' 문제를 경험하기도 한다.
유니티 에디터는 버전이 업데이트되면서 지속적으로 인터페이스와 기능이 개선되고 있다. 새로운 입력 시스템, UI 툴킷, 데이터 지향 기술 스택과 같은 주요 시스템이 도입되면서, 에디터 내에서 이들을 설정하고 관리하는 방식도 진화해 왔다. 이는 유니티가 더 복잡하고 규모가 큰 프로젝트를 지원하기 위해 노력하고 있음을 보여준다.
